package com.huawei;

import java.util.*;
import java.util.stream.Collectors;

/**
 输入一个字符串，返回其最长的数字子串，以及其长度。若有多个最长的数字子串，则将它们全部输出（按原字符串的相对位置）
 本题含有多组样例输入。输出字符串中最长的数字字符串和它的长度，中间用逗号间隔。如果有相同长度的串，则要一块儿输出（中间不要输出空格）。
 输入：
 abcd12345ed125ss123058789
 a8a72a6a5yy98y65ee1r2
 输出：
 123058789,9
 729865,2
 **/
public class HJ092 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextLine()){
            String input = scanner.nextLine();
            work(input);
        }


    }

    public static void work(String input){
        char[] charArray = input.toCharArray();
        //逆序map
        Map<Integer, String> map = new TreeMap<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < charArray.length; i++) {
            if (Character.isDigit(charArray[i])) {
                list.add(i);
            }
        }

        //双指针法
        int start = list.get(0);
        int end = start;
        int cur = end;
        //System.out.println(list);
        for (int i = 1; i < list.size(); i++) {
            cur = list.get(i);
            if (cur == end + 1) {
                end = cur;
            } else {
                char[] sonCharArray = Arrays.copyOfRange(charArray, start, end + 1);
                String sonStr = new String(sonCharArray);
                int length = end - start + 1;
                if (map.get(length) == null) {
                    map.put(length, sonStr);
                } else {
                    map.put(length, map.get(length) + sonStr);
                }
                end = start = cur;
            }

            //遇到最后一个的时候，不可能走上面else的判断，把已经存档的start，end再次放到map
            if (i == list.size()-1){
                char[] sonCharArray = Arrays.copyOfRange(charArray, start, end + 1);
                String sonStr = new String(sonCharArray);
                int length = end - start + 1;
                if (map.get(length) == null) {
                    map.put(length, sonStr);
                } else {
                    map.put(length, map.get(length)+sonStr);
                }
            }
        }
        if (map.size() > 0) {
            List<Map.Entry<Integer, String>> set = map.entrySet().stream().collect(Collectors.toList());
            Map.Entry<Integer, String> maxEntry = set.get(0);
            Integer key = maxEntry.getKey();
            String value = maxEntry.getValue();
            System.out.println(value + "," + key);
        }
        //System.out.println(map);
    }

}
